package view;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import model.CashRegister;
import model.ClientGenerator;
import utilities.Constants;
public class SimulationFrame extends JFrame {
private CashRegister[] cashRegisters;
private GridBagConstraints gbc;
private QueuePanel queue1Panel;
private QueuePanel queue2Panel;
private QueuePanel queue3Panel;
private LoggerPanel lp;
public SimulationFrame(CashRegister[] cashRegisters) {
super("Queues simulation");
this.setCashRegisters(cashRegisters);
this.setSize(Constants.X_FRAME, Constants.Y_FRAME);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new GridBagLayout());
initializeComponents();
draw(0, cashRegisters[0]);
draw(1, cashRegisters[1]);
draw(2, cashRegisters[2]);
}
public SimulationFrame() {
super("Simulation in progress...");
this.setSize(Constants.X_FRAME, Constants.Y_FRAME);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new GridBagLayout());
initializeComponents();
}
public void initializeComponents() {
this.gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(10, 10, 0, 10);
this.queue1Panel = new QueuePanel(0);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 2;
gbc.ipadx = 780;
gbc.ipady = 60;
this.add(queue1Panel, gbc);
gbc.insets = new Insets(10, 10, 0, 10);
this.queue2Panel = new QueuePanel(1);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 2;
gbc.ipadx = 780;
gbc.ipady = 60;
this.add(queue2Panel, gbc);
gbc.insets = new Insets(10, 10, 0, 10);
this.queue3Panel = new QueuePanel(2);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.weightx = 2;
gbc.ipadx = 780;
gbc.ipady = 60;
this.add(queue3Panel, gbc);
gbc.insets = new Insets(0, 10, 10, 10);
this.lp = new LoggerPanel();
gbc.gridx = 0;
gbc.gridy = 3;
gbc.ipadx = 780;
gbc.ipady = 320;
this.add(lp, gbc);
}
public void draw(int id, CashRegister cashRegister) {
switch (id) {
case 0:
this.getQueuePanel(0).drawElements(cashRegister);
break;
case 1:
this.getQueuePanel(1).drawElements(cashRegister);
break;
default:
this.getQueuePanel(2).drawElements(cashRegister);
break;
}
}
public LoggerPanel getLoggerPanel() {
return this.lp;
}
public CashRegister[] getCashRegisters() {
return cashRegisters;
}
public void setCashRegisters(CashRegister[] cashRegisters) {
this.cashRegisters = cashRegisters;
}
public QueuePanel getQueuePanel(int i) {
switch (i) {
case 0:
return queue1Panel;
case 1:
return queue2Panel;
default:
return queue3Panel;
}
}
}